#include <cstring>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

// using namespace std;
using std::getline;
using std::cin;
using std::endl;
using std::cout;
using std::ifstream;
using std::istringstream;
using std::string;

// (1)预习文件输入流后续的内容，尝试解决课上的问题（用不同的getline将文件内容打印两次）

// (2)预习字符串输入流的使用，尝试解决课上的问题（更健壮的输入整型数据的程序）

// (3)根据讲义安装log4cpp，跑通示例代码，尝试使用这个工具完成自定义格式的日志系统

// (4)预习友元

// 根据自身情况安排复习，弄清楚了当前内容后再酌情预习
//


void readConfig(string& fileName){
    ifstream ifs("congig.ini");

    string line;
    while(getline(ifs, line, '\n')){
        if(memcmp(line.data(), "file", 4) == 0){
            line = string(line.begin() + 5, line.end());
            istringstream iss(line);
            iss >> fileName;    
        }
    }

}

void test0(){
    string fileName;
    readConfig(fileName);
    ifstream ifs(fileName);
    cout << fileName << endl;

    string line;

    cout << "*********************第一次打印**********************" << endl;
    while(getline(ifs, line, '\n')){
        cout << line << endl;
    }

    ifs.clear();
    ifs.seekg(0);


    cout << "*********************第二次打印**********************" << endl;
    while(getline(ifs, line, '\n')){
        cout << line << endl;
    }

}

void test1(void) {
    string line;
begin:
    std::getline(cin, line, '\n');
    int point = 0;
    int flag = 0;
    for (auto &ch : line){
        if(flag == 0){
            if(ch == '-'){continue;}
        }
        flag++;
        if (ch == '.'){++point;}
        if ((isdigit(ch) != true && ch != '.') || point > 1){
            cout << "错了哦" << endl;
            goto begin;
        }
    }

    istringstream iss(line);
    double num;
    iss >> num;
    cout << num << endl;

}
int main(void)
{

    while (1)
    {
        cout << "开始" << endl;
        test1();
        cout << "结束" << endl;
    }

    return 0;
}
